package cn.good.yan.model.controller;

import cn.good.yan.model.entity.User;
import cn.good.yan.model.service.UserService;
import jakarta.annotation.Resource;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 测试： 用户数据，来源于数据库
 * 当我们登录，成功，才可以访问该接口：http://localhost:8080/user/list  得到用户列表数据
 *
 * @author shengren.yan
 * @create 2024-07-16
 */
@RestController
@RequestMapping("/user")
public class UserController {
    @Resource
    public UserService userService;

    // 用户必须有 ADMIN 角色 并且 用户名是 admin 才能访问此方法，其他人没有权限
    @PreAuthorize("hasRole('ADMIN') and authentication.name == 'admin'")
    @GetMapping("/list")
    public List<User> getList() {
        return userService.list();
    }

    // 添加用户
    @PostMapping("/add")
    public void add(@RequestBody User user) {
        userService.saveUserDetails(user);
    }


    // 用户必须有 USER_ADD 权限 才能访问此方法
    @PreAuthorize("hasAuthority('USER_ADD')")
    @GetMapping("/save")
    public String save() {
        return "有权限进行方法，该接口";
    }


}
